/// 动态数据转int
/// 如果转换失败则返回默认值[defaultValue]
int parseInt(dynamic value, {defaultValue = 0}) {
  if (value is num) {
    return value.toInt();
  }
  if (value is String) {
    return int.tryParse(value) ?? defaultValue;
  }
  return defaultValue;
}

/// 动态数据转double
/// 如果转换失败则返回默认值[defaultValue]
double parseDouble(dynamic value, {defaultValue = 0.0}) {
  if (value is num) {
    return value.toDouble();
  }
  if (value is String) {
    return double.tryParse(value) ?? defaultValue;
  }
  return defaultValue;
}

/// 动态数据转bool
/// - bool类型的数据直接返回
/// - num类型的数据如果为0则返回false，否则返回true
/// - String类型的数据如果为空字符串则返回false，否则返回true
/// - null返回[nullValue]
/// - 其他类型的数据返回[objectValue]
bool parseBool(dynamic value, {nullValue = false, objectValue = true}) {
  if (value == null) {
    return nullValue;
  }
  if (value is bool) {
    return value;
  }
  if (value is num) {
    return value != 0;
  }
  if (value is String) {
    return value.isNotEmpty;
  }
  return objectValue;
}

/// 动态数据转String
/// - String类型的数据直接返回
/// - null返回[nullValue]
/// - 如果[objectToString]为true，则其他类型的数据返回[value.toString()]，否则返回空字符串
String parseString(dynamic value, {nullValue = '', objectToString = true}) {
  if (value == null) {
    return nullValue;
  }
  if (value is String) {
    return value;
  }
  return objectToString ? value.toString() : '';
}
